package com.atguigu.cloud.sevice;

import com.atguigu.cloud.entities.Product;
import com.atguigu.cloud.entities.User;
import com.atguigu.cloud.tool.load.page.PaginationInterface;
import com.atguigu.cloud.tool.load.page.QueryObject.BaseQueryObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import javax.lang.model.element.Name;
import java.util.List;
import java.util.Map;

/**
 * @Auter zzh
 * @Date 2024/11/13
 */
public interface UserService extends PaginationInterface<User> {
    User getById(Integer id);
    List<User> getAll();
    int add(User user);
    int delete(Integer id);
    int update(User user);

    //用户查询购物车里的商品
    List<Map<String, Object>> getProductList(Integer id);

    //用户删除购物车里的商品
    int delProduct(Integer id, Integer products);

    //用户下单支付创建订单
    String  createOrder(Map<String, Integer> map);

    //唯一名字限制
    boolean onlyName(String name);

    //根据名字返回id
    Integer getIdByName(String name);

    //分页查询实现
/*    @Override
    public PaginationResult<User> paginationQuery(Integer currentPage) {
            //为0排除
            if (currentPage==0){
                throw new RuntimeException("输入目标页号为0,这将不被允许");
            }
            //分页对象,包含分页大小和分页号数
            BaseQueryObject qo =new BaseQueryObject(currentPage);

            QueryWrapper<User> queryWrapper=new QueryWrapper<>();

            // 获取查询的记录数
            long totalCount = userMapper.selectCount(queryWrapper);
            // 获得查询的目标结果集,(这里就用基础的mybatis实现了)
            List<User> list_user = userMapper.PaginationQuery(qo.getStart(),qo.getPageSize());

            // 如果总记录数为0，那么说明没数据就不用下一步查询了，提高效率。
            if (totalCount == 0){
                // 返回一个查询结果集，返回当前页、每页记录数、以及一个空的结果集
                return new PaginationResult<User>(qo.getCurrentPage(),qo.getPageSize(),totalCount, Collections.EMPTY_LIST);
            }

            // 返回一个查询结果集，返回当前页、每页记录数、以及结果集
            return new PaginationResult<User>(qo.getCurrentPage(),qo.getPageSize(),totalCount,list_user);

        }*/


    //分页查询实现
/*    @Override
    public PaginationResult<User> paginationQuery(Integer currentPage) {
            //为0排除
            if (currentPage==0){
                throw new RuntimeException("输入目标页号为0,这将不被允许");
            }
            //分页对象,包含分页大小和分页号数
            BaseQueryObject qo =new BaseQueryObject(currentPage);

            QueryWrapper<User> queryWrapper=new QueryWrapper<>();

            // 获取查询的记录数
            long totalCount = userMapper.selectCount(queryWrapper);
            // 获得查询的目标结果集,(这里就用基础的mybatis实现了)
            List<User> list_user = userMapper.PaginationQuery(qo.getStart(),qo.getPageSize());

            // 如果总记录数为0，那么说明没数据就不用下一步查询了，提高效率。
            if (totalCount == 0){
                // 返回一个查询结果集，返回当前页、每页记录数、以及一个空的结果集
                return new PaginationResult<User>(qo.getCurrentPage(),qo.getPageSize(),totalCount, Collections.EMPTY_LIST);
            }

            // 返回一个查询结果集，返回当前页、每页记录数、以及结果集
            return new PaginationResult<User>(qo.getCurrentPage(),qo.getPageSize(),totalCount,list_user);

        }*/


    //分页查询实现
/*    @Override
    public PaginationResult<User> paginationQuery(Integer currentPage) {
            //为0排除
            if (currentPage==0){
                throw new RuntimeException("输入目标页号为0,这将不被允许");
            }
            //分页对象,包含分页大小和分页号数
            BaseQueryObject qo =new BaseQueryObject(currentPage);

            QueryWrapper<User> queryWrapper=new QueryWrapper<>();

            // 获取查询的记录数
            long totalCount = userMapper.selectCount(queryWrapper);
            // 获得查询的目标结果集,(这里就用基础的mybatis实现了)
            List<User> list_user = userMapper.PaginationQuery(qo.getStart(),qo.getPageSize());

            // 如果总记录数为0，那么说明没数据就不用下一步查询了，提高效率。
            if (totalCount == 0){
                // 返回一个查询结果集，返回当前页、每页记录数、以及一个空的结果集
                return new PaginationResult<User>(qo.getCurrentPage(),qo.getPageSize(),totalCount, Collections.EMPTY_LIST);
            }

            // 返回一个查询结果集，返回当前页、每页记录数、以及结果集
            return new PaginationResult<User>(qo.getCurrentPage(),qo.getPageSize(),totalCount,list_user);

        }*/

}
